#include<iostream>
#include<cstring>

using namespace std;

const int N = 100010, M = 200010;
int h[N], e[M], ne[M], idx;
int n, m;
int color[N];
void add(int a, int b){
    e[idx] = b;
    ne[idx] = h[a];
    h[a] = idx++;
    
}

bool dfs(int u, int col){
    color[u] = col;
    for(int i = h[u]; i != -1; i = ne[i]){
        int j = e[i];
        if(!color[j]){
            if(!dfs(j ,3 - col))return false;
        }
        else if(color[j] == col)return false;
        
    }
    return true;
    
    
    
}
int main(){
    memset(h, -1, sizeof(h));
    cin>>n>>m;
    while(m--){
        int u, v;
        cin>>u>>v;
        add(u, v), add(v, u);
    }
    
    bool flag = true;
    for(int i = 1; i <= n; i++){
        if(!color[i]){
            if(!dfs(i, 1)){
                flag = false;
                break;
            }
        }
    }
    if(flag)puts("Yes");
    else puts("No");
    
}